package process

import "fmt"

// UserMgr 在服务器中有且只有一个
// 因为很多地方使用  会使用到, 因此 我们定义为一个全局变量
var (
	userMgr *UserMgr
)

type UserMgr struct {
	onlineUsers map[int]*UserProcess
}

func init() {
	userMgr = &UserMgr{onlineUsers: make(map[int]*UserProcess,1024)}
}

// 添加
func (u *UserMgr)AddOnlineUser(up *UserProcess)  {
	u.onlineUsers[up.userId] = up
}

// 删除
func (u *UserMgr)DeleteOnlineUser(up *UserProcess)  {
	delete(u.onlineUsers,up.userId)
}

// 查询
func (u *UserMgr)GetAllOnlineUser()  map[int]*UserProcess {
	return u.onlineUsers
}

//根据ID 返回对应的值
func (u *UserMgr) GerOnlineUserById(userId int) (up *UserProcess, err error) {
	// 如果从map中取出一个值带检测
	up, ok := u.onlineUsers[userId]
	if !ok{
		// 你要查找的这个用户当前不在线
		err = fmt.Errorf("用户%d 不存在",userId)
		return
	}
	return
}




